package com.beiben.system.user.service;

import com.beiben.ability.people.domain.TreeSelectDept;
import com.beiben.system.user.domain.BeiBenUser;
import com.beiben.system.user.domain.TreeSelectVo;
import com.beiben.system.user.domain.UserTreeSelect;
import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.SysPost;

import java.util.List;

/**
 * Created by admin on 2020/8/25.
 */
public interface IBeiBenUserService {

    /**
     * 根据条件分页查询用户列表
     *
     * @param user 用户信息
     * @return 用户信息集合信息
     */
    public List<BeiBenUser> selectBeiBenUserList(BeiBenUser user);

    /**
     * 通过用户ID查询用户
     *
     * @param userId 用户ID
     * @return 用户对象信息
     */
    public BeiBenUser selectUserById(Long userId);

    /**
     * 构建员工部门树
     * @param deptId
     * @return
     */
    public List<TreeSelectDept> buildDeptTreeSelect(Long deptId) ;

    /**
     * 部门员工信息
     * @param deptId
     * @return
     */
    public List<BeiBenUser> getDeptUserInfo(Long deptId) ;

    /**
     * 新增用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    public int insertBeiBenUser(BeiBenUser user);

    /**
     * 修改用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    public int updateBeiBenUser(BeiBenUser user);

    /**
     * 校验用户是否允许操作
     *
     * @param user 用户信息
     */
    public void checkUserAllowed(BeiBenUser user);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param deptId 部门Id
     * @return 下拉树结构列表
     */
    public List<TreeSelectVo> buildUserTreeSelect(long deptId);


    /**
     * 部门员工所属岗位信息
     * @param userId
     * @return
     */
    public List<SysPost> selectUserPostByUserId(Long userId) ;
}
